<?php
class Search_Model_Kodawarijyoken extends Search_Model_Common{

	/**
	* こだわり条件項目取得
	*
	* @access	public
	* @param	array パラメータ
	* @return	array 対象項目データ
	*/
	public function getKodawariJyoken($params)
	{
		$db_params = array();

		for ($i=0; $i<count($params['PrefCd']); $i++) {
			// 50～53⇒01へ変更（地図検索・北海道エリア用の特別コード）
			if ($params['PrefCd'][$i] >= '50' and $params['PrefCd'][$i] <= '53')
			{
				$params['PrefCd'][$i] = '01';
			}
		}

		// こだわり条件取得
		$sql = $this->generateSql($params);

		return $this->dbGetList($sql,$db_params);
	}

	/**
	* Where句作成
	*
	* $paramsに格納されたデータをOR条件で連結する。
	*
	* @access	public
	* @param	string カラム名
	* @param	array  対象項目データ
	* @return	string Where句
	*/
	public function createKodawariWhere($params)
	{
		$todofuken = array();

		// 都道府県CDが配列か否か
		if(is_array($params)){
			// 配列なら
			$todofuken = $params;
		}else{
			// 配列ではない場合、カンマ区切りを想定
			$todofuken = split(",",$params);
		}

		// データ数分ループ
		for($i=0;$i<count($todofuken);$i++){
			if($i == 0){
				$sql = " ( ( SUBSTR(W74_TODOUFUKEN_USE_CD, ".intval($todofuken[$i]).",1) = '1' )";
			}else{
				$sql.= " OR ( SUBSTR(W74_TODOUFUKEN_USE_CD, ".intval($todofuken[$i]).",1) = '1' )";
			}
		}

		$sql .= ")";

		return $sql;
	}

	/**
	* こだわり条件データを表示用に変換
	*
	* @access	public
	* @param	array
	* @param	array ※参照渡し
	* @return	void
	*/
	public function convertData($params, &$data)
	{
		$data['Mapping'] = array();

		foreach ($data['kodawari'] as $listData)
		{
			$kodawariType = $listData['KODAWARI_TYPE'];
			$kodawariId = "kodawari".$listData['W74_KODAWARI_ID'];
			$kodawariChecked = "";

			// パラメータにこだわり条件がある場合,選択済みとする
			if($this->returnValue($params,$kodawariId) == on){
				$kodawariChecked = "checked";
			}

			// こだわり種別が異なる場合
			if (array_key_exists($kodawariType, $data['Mapping']) == false)
			{
				$data['Mapping']["$kodawariType"]['KODAWARI_TYPE'] = $listData['KODAWARI_TYPE'];
				$data['Mapping']["$kodawariType"][] = array();
			}

			$data['Mapping']["$kodawariType"]['KODAWARI_DATA'][] = array(
				'KODAWARI_ID'			=> $kodawariId,
				'KODAWARI_NAME'			=> $listData['W74_KODAWARI_NAME'],
				'KODAWARI_CHECKED'		=> $kodawariChecked
			);

		}
	}

	/**
	* こだわり条件データを表示用に変換
	*
	* @access	public
	* @param	array
	* @param	array ※参照渡し
	* @return	void
	*/
	public function convertKodawariData($params, &$data)
	{
		$data['kodawari_joken'] = array();

		foreach ($data['kodawari'] as $listData)
		{
			$kodawariType = $listData['KODAWARI_TYPE'];
			$kodawariId = "kodawari".$listData['W74_KODAWARI_ID'];
			$kodawariChecked = "";

			// パラメータにこだわり条件がある場合,選択済みとする
			if($this->returnValue($params,$kodawariId) == on){
				$kodawariChecked = "checked";
			}

			// こだわり種別が異なる場合
			if (array_key_exists($kodawariType, $data['kodawari_joken']) == false)
			{
				$data['kodawari_joken']["$kodawariType"]['KODAWARI_TYPE'] = $listData['KODAWARI_TYPE'];
				$data['kodawari_joken']["$kodawariType"][] = array();
			}

			$data['kodawari_joken']["$kodawariType"]['KODAWARI_DATA'][] = array(
				'KODAWARI_ID'			=> $kodawariId,
				'KODAWARI_NAME'			=> $listData['W74_KODAWARI_NAME'],
				'KODAWARI_CHECKED'		=> $kodawariChecked
			);

		}
		
	}

	/**
	 * こだわり条件取得SQL文の取得
	 *
	 * こだわり条件取得SQL文の取得を行う
	 * @access	public
	 * @param	array
	 * @return	string こだわり条件取得SQL
	 */
	public function generateSql($params)
	{
		$sql = "";
		$sql .= "SELECT";
		$sql .= "        W74_KODAWARI_ID";
		$sql .= "        ,W74_KODAWARI_NAME";
		$sql .= "        ,M45_KODAWARI_TYPE_NAME AS KODAWARI_TYPE";
		$sql .= "        ,M45_PRIORITY_NO";
		$sql .= "        ,W74_USE_CD";
		$sql .= "    FROM";
		$sql .= "        W74KODAWARI";
		$sql .= "        ,M45KODAWARI_TYPE";
		$sql .= "    WHERE";
		$sql .=          $this->createKodawariWhere($params['PrefCd']);
		$sql .= "        AND W74_KODAWARI_TYPE = M45_KODAWARI_TYPE";
        $sql .= "        AND M45_PRIORITY_NO IS NOT NULL";
		$sql .= "    ORDER BY";
		$sql .= "        M45_PRIORITY_NO";
		$sql .= "        ,W74_PRIORITY_NO";

		return $sql;
    }
}
?>